package org.mrlof.navigation;

public class Map {
	Integer[][] matterMatrix;
	CellReaderAndWriter<Integer> matterRAW;
	
	Integer[][] probabilityMatrix;
	CellReaderAndWriter<Integer> probabilityRAW;
	
	int size;
	
	/**
	 * 地图是正方形的。
	 * 哦，对了，这个地图是局部地图。
	 * 地图不要太大，否则计算太慢了。
	 * 一般来说，格子的直径比机器人的直径稍微大一点。
	 * 格子的数目建议取机器人探测半径的2倍。这里的2倍是我猜测的，我想肯定还有更合适的数值。
	 * @param size
	 */
	public Map(int size) {
		this.size = size;
		
		this.matterRAW = new DefaultCellRAW<Integer>(this.matterMatrix);
		this.probabilityRAW = new DefaultCellRAW<Integer>(this.probabilityMatrix);
	}
	
	public CellReaderAndWriter<Integer> getMatterReader() {
		return this.matterRAW;
	}
	
	public CellReaderAndWriter<Integer> getProbabilityReader() {
		return this.probabilityRAW;
	}
	
	protected void initGrid() {
		this.matterMatrix = new Integer[this.size][this.size];
		this.probabilityMatrix = new Integer[this.size][this.size];
		
		for (int x=0; x<this.size; x++) {
			for (int y=0; y<this.size; y++) {
				this.matterMatrix[x][y] = 0;
				this.probabilityMatrix[x][y] = 0;
			}
		}
	}
}
